Trong gia tốc GPU, chúng ta phải từ bỏ tư duy "tính toán trước tiên". Hiệu suất hiện đại bị quyết định bởi Quản lý bộ nhớ: sự điều phối việc phân bổ dữ liệu, đồng bộ hóa và tối ưu hóa giữa thiết bị chủ (CPU) và thiết bị con (GPU).
1. Khoảng cách giữa bộ nhớ và tính toán
Trong khi băng thông tính toán của GPU ($TFLOPS$) đã tăng vọt, băng thông bộ nhớ ($GB/s$) lại tăng ở tốc độ chậm hơn nhiều. Điều này tạo ra một khoảng trống khiến các đơn vị thực thi thường xuyên "khát kiệt", phải chờ dữ liệu đến từ VRAM. Vì vậy, Lập trình GPU thường là lập trình bộ nhớ.
2. Mô hình Roofline
Mô hình này minh họa mối quan hệ giữa Độ cường độ tính toán (FLOPs/Byte) và hiệu suất. Các ứng dụng thường được chia thành hai loại:
- Giới hạn bởi bộ nhớ: Bị giới hạn bởi băng thông (đường dốc cao).
- Giới hạn bởi tính toán: Bị giới hạn bởi đỉnh TFLOPS (đỉnh ngang).
3. Chi phí di chuyển dữ liệu
Điểm nghẽn hiệu suất chính hiếm khi nằm ở phép toán; mà là độ trễ và chi phí năng lượng khi di chuyển một byte qua bus PCIe hoặc từ HBM. Mã hiệu suất cao ưu tiên giữ dữ liệu tại chỗ và giảm thiểu việc truyền dữ liệu giữa thiết bị chủ và thiết bị con.